<<<предыдущая глава к содержанию следующая глава >>>

7. Коллекция тестовых матриц

Предлагаемая ниже небольшая часть коллекции тестовых матриц интересна как с позиций хотя бы дилетантского знакомства с итогами многовекового математического творчества, так и тестирования элементов собственных программных разработок.

hadamard (n) - матрица Адамара (ортогональная матрица из 1 и -1); n должно быть целым и n, n/12 или n/20 должны быть степенью 2:

>> hadamard (4)
ans =1 1 1 1
1 -1 1 -1
1 1 -1 -1
1 -1 -1 1

hilb (n), invhilb(n) - матрица Гильберта hij=1/(i+j-1) и ей обратная (пример матрицы, плохо обусловленной :к обращению):
>>A=hilb(3)
A = 1.0000 0.5000 0.3333
0.5000 0.3333 0.2500
0.3333 0.2500 0.2000
>> B=invhilb(3)
B = 9 -36 30
-36 192 -180
30 -180 180
>> det(A)
ans =
4.6296e-004

magic(n) - магический квадрат (квадратная матрица с элементами от 1 до n2 с равными суммами элементов по строкам и столбцам):
>> magic(2)
ans = 1 3
4 2
>> magic(3)
ans = 8 1 6
3 5 7
4 9 2

pascal(n) - матрица Паскаля - симметрическая матрица из коэффициентов разложения бинома (1+х)j (треугольника Паскаля)

1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
>> pascal(3)
ans = 1 1 1
1 2 3
1 3 6
>>pascal(5)
ans = 1 1 1 1 1
1 2 3 4 5
1 3 6 10 15
1 4 10 20 35
1 5 15 35 70

rosser - матрица Рессера (матрица 8-го порядка, служащая тестом для алгоритмов решения симметричной проблемы собственных значений ):
611 196 -192 407 -8 -52 -49 29
196 899 113 -192 -71 -43 -8 -44
192 113 899 196 61 49 8 52
407 -192 196 611 8 44 59 -23
8 -71 61 8 411 -599 208 208
52 -43 49 44 -599 411 208 208
49 -8 8 59 208 208 99 -911
29 -44 52 -23 208 208 -911 99
имеет два кратных значения, три близких, нулевое и малое ненуле-вое):
1000 1000 1020.049 1020.000 1019.902 0.098 0 -1020.049

toepliz(Х) - симметрическая матрица Теплица, определяющая перестановки элементов вектора Х ;

toepliz(Х,Y) - несимметрическая матрица Теплица, первый столбец которой совпадает с вектором X и первая строка с вектором Y (если х1 у1, возникает конфликт на главной диагонали с предпочтением для X):
>> x=[1 3 5 7];
>> toeplitz(x)
ans = 1 3 5 7
3 1 3 5
5 3 1 3
7 5 3 1
>> x=[1 3 5 7];
>> y=[1 11 21 31];
>> toeplitz(x,y)
ans = 1 11 21 31
3 1 11 21
5 3 1 11
7 5 3 1
>> x=[1 3 5 7];
>> y=[-1 -11 -21 -31];
>> toeplitz(x,y)
Column wins diagonal conflict
.ans = 1 -11 -21 -31
3 1 -11 -21
5 3 1 -11
7 5 3 1

wilkinson(n) - матрица Уилкинсона (трехдиагональная симметрическая матрица n-го порядка, служащая тестом для алгоритмов решения проблемы собственных значений ; обычно берут n=21, где возникают кратные и близкие значения);

vander(X) - матрица Вандермонда (размерность совпадает с числом n элементов вектора Х Vij=xin-j):
>> wilkinson(4)
ans =
1.5000 1.0000 0 0
1.0000 0.5000 1.0000 0
0 1.0000 0.5000 1.0000
0 0 1.0000 1.5000
x= [1 2 3 5]
>> vander(x)
ans = 1 1 1 1
8 4 2 1
27 9 3 1
125 25 5 1

Ряд тестовых матриц упакован в специальный подкаталог, вызываемый командой :
[<выходные параметры>]= gallery('имя матрицы', <входные параметры>)

К их числу относятся -

cauchy(X,Y), cauchy(X) - матрица Коши с элементами Cij=1/(xi+yj): при монотонно возрастающих последовательностях Х и Y матрица положительно определенная;

circul(Х) - циркулянтная матрица, получается из вектора Х построчно циклической перестановкой его элементов; если X скаляр, то берется вектор [1:X]; ее собственное значение равно скалярному произведениюХ и вектора [1 t t2 ... tn-1 ] , где t - корень n-й степени из -1:
>> x=[1 2 3 5];
>> y=[1 2 100 200];
>> gallery('cauchy',x,y)
ans = 0.5000 0.3333 0.0099 0.0050
0.3333 0.2500 0.0098 0.0050
0.2500 0.2000 0.0097 0.0049
0.1667 0.1429 0.0095 0.0049
>> gallery('circul',[1 3 6 9])
ans =
1 3 6 9
9 1 3 6
6 9 1 3
3 6 9 1

clement(n,sym) - трехдиагональная n-мерная матрица Клемента с нулями на главной диагонали с собственными значениями из последовательности [n1, n-3 ,n-5...] c плюсом и минусом (при нечетном n добавляется 0 или 1); sym=1 определяет симметричность матрицы:
>> gallery('clement',4)
ans =
0 1 0 0
3 0 2 0
0 2 0 3
0 0 1 0
>> eig(ans)
ans = 3 -3 1 -1
>> gallery('clement',4,1)
ans=
0 1.7320 0 0
1.7320 0 2.0000 0
0 2.0000 0 1.7320
0 0 1.7320 0
>> eig(ans)
ans = 3 -3 1 -1
>> gallery('clement',3,1)
ans =
0 1.4142 0
1.4142 0 1.4142
0 1.4142 0
eig(ans)
ans = 2 0 -2

Кроме упомянутых в подкаталог входят еще свыше 40 тестовых матриц, связанных с проблемой собственных значений, обращением, полиномами Чебышева и др.


<<<предыдущая глава к содержанию следующая глава >>>